/* Module per la definizione dei wrappers al database.*/

connettiDB:-
	odbc_open(db_citta,itinerari_pl_usr,'DiEM!',db),
	%odbc_open(db_citta,"","",db),
	odbc_attach(mezziTrasporto,table('mezzitrasporto')),
	odbc_attach(tsiti,table('siti')),
	odbc_attach(eventi,table('eventi')),
	odbc_attach(componenti,table('componenti')),
	odbc_attach(fermate,table('fermate')),
	odbc_attach(collegamenti,table('collegamenti')),
	odbc_attach(tempiVisita,table('tempivisita')),
	odbc_attach(tempiSpostamentoPiedi,table('tempispostamentopiedi')),
	%odbc_attach(tempiSpostamentoPiedi,table('tempispostamento')),
	odbc_attach(fermateMezzi,table('fermatemezzi')),
	odbc_attach(fotoSiti,table('infositi')),
	odbc_attach(tipoSiti,table('tipositi')),


	%% Query
	odbc_query(sitiApp(A,B,C,D,E,F,G,H),(tsiti(A,B,I,D,E,F,G,H),tipoSiti(I,C))),
	
	%%Inserimento nel DataBase
	odbc_insert(ins_eventi(IdEvento,Nome,DataInizio,DataFine,IdSito), (eventi(IdEvento,Nome,DataInizio,DataFine,IdSito))),
	odbc_delete(del_eventi(IdEvento), (eventi(IdEvento,_,_,_,_))),
	
	calcMinX,calcMinY.


:-	assert(minX(0)),
	retract(minX(_)),
	assert(minY(0)),
	retract(minY(_)).	
	
calcMinX:-
	findall(X,sitiApp(_,_,_,_,_,X,_Y,_),Lx),
	sort(Lx,[X|_]),
	asserta(minX(X)),
	odbc_transaction(commit).
calcMinY:-
	findall(Y,sitiApp(_,_,_,_,_,_X,Y,_),Lx),
	sort(Lx,[Y|_]),
	asserta(minY(Y)),
	odbc_transaction(commit).	
	
	
siti(A,B,C,D,E,F,G,H):-
	sitiApp(A,B,C,D,E,F1,G1,H),
	minX(MINX),minY(MINY),
	F is floor((F1 - MINX) *10000),
	G is floor((G1 - MINY) *10000).
	
	
%%siti(Id,Nome,Tipo,IndIco,IndFre,X,Y,N):- tsiti(Id,Nome,_IdTipo,IndIco,IndFre,X,Y,N), tipoSiti(_IdTipo,Tipo).

disconnettiDB:-
	odbc_close(db).
